﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Generic;
using Com.Alipay;
using BaseSet.Entity;
using BaseSet.Logic;

namespace WebSite.UserCash
{
    public partial class GotoPayment : System.Web.UI.Page
    {
        Users user;
        protected void Page_Load(object sender, EventArgs e)
        {
            user = UserBase.GetCurrentUser();
            if (user == null || Request.Form["money"] == null)
            {
                Response.Redirect("CashAdd.aspx",true);
            }
            string money = Request.Form["money"];
            ////////////////////////////////////////////请求参数////////////////////////////////////////////

            //必填参数//

            string out_trade_no = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(1000, 10000);  //请与贵网站订单系统中的唯一订单号匹配
            string subject = "友赢网在线充值";                    //订单名称，显示在支付宝收银台里的“商品名称”里，显示在支付宝的交易管理的“商品名称”的列表里。
            string body = "友赢网在线充值";                          //订单描述、订单详细、订单备注，显示在支付宝收银台里的“商品描述”里
            string price = money;    		        //订单总金额，显示在支付宝收银台里的“商品单价”里

            string logistics_fee = "0.00";                  				//物流费用，即运费。
            string logistics_type = "EXPRESS";				                //物流类型，三个值可选：EXPRESS（快递）、POST（平邮）、EMS（EMS）
            string logistics_payment = "SELLER_PAY";            			//物流支付方式，两个值可选：SELLER_PAY（卖家承担运费）、BUYER_PAY（买家承担运费）

            string quantity = "1";              							//商品数量，建议默认为1，不改变值，把一次交易看成是一次下订单而非购买一件商品。

            //选填参数//

            //买家收货信息（推荐作为必填）
            //该功能作用在于买家已经在商户网站的下单流程中填过一次收货信息，而不需要买家在支付宝的付款流程中再次填写收货信息。
            //若要使用该功能，请至少保证receive_name、receive_address有值
            //收货信息格式请严格按照姓名、地址、邮编、电话、手机的格式填写
            string receive_name = "";			                    //收货人姓名，如：张三
            string receive_address = "";			                //收货人地址，如：XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号
            string receive_zip = "";                  			    //收货人邮编，如：123456
            string receive_phone = "";                		    //收货人电话号码，如：0571-81234567
            string receive_mobile = "";               		    //收货人手机号码，如：13312341234

            //网站商品的展示地址，不允许加?id=123这类自定义参数
            string show_url = "";

            ////////////////////////////////////////////////////////////////////////////////////////////////

            //把请求参数打包成数组
            SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>();
            sParaTemp.Add("body", body);
            sParaTemp.Add("logistics_fee", logistics_fee);
            sParaTemp.Add("logistics_payment", logistics_payment);
            sParaTemp.Add("logistics_type", logistics_type);
            sParaTemp.Add("out_trade_no", out_trade_no);
            sParaTemp.Add("payment_type", "1");
            sParaTemp.Add("price", price);
            sParaTemp.Add("quantity", quantity);
            sParaTemp.Add("receive_address", receive_address);
            sParaTemp.Add("receive_mobile", receive_mobile);
            sParaTemp.Add("receive_name", receive_name);
            sParaTemp.Add("receive_phone", receive_phone);
            sParaTemp.Add("receive_zip", receive_zip);
            sParaTemp.Add("show_url", show_url);
            sParaTemp.Add("subject", subject);


            AddRecord(out_trade_no);//添加充值记录

            //构造标准双接口表单提交HTML数据，无需修改
            Service ali = new Service();
            string sHtmlText = ali.Trade_create_by_buyer(sParaTemp);
            Response.Write(sHtmlText);
        }
        private void AddRecord(string orderNo) //添加充值记录
        {
            CashFlow model = new CashFlow();
            model.UsersID = user.ID;
            model.Money = 0;
            model.Type = 1;
            model.Description = "支付宝充值";
            model.CreateDate = DateTime.Now;
            model.OrderNo = orderNo;
            model.TradeNo = "";
            new CashFlowHelper().AddCashFlow(model);
        }
    }
}